package com.example.gkcircle.utils;

import android.graphics.Bitmap;
import android.view.View;
import android.widget.ImageView;

import com.example.gkcircle.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 * Created by Jehu on 16/3/27.
 */
public class UniversalImageLoader {


    public static ImageLoader imageLoader;
    public static DisplayImageOptions options;        // 显示图片的设置

    public static ImageLoader getIntance(){
        if(imageLoader==null){
            imageLoader = ImageLoader.getInstance();
        }
        return imageLoader;
    }


    //头像配置
    public static DisplayImageOptions getAvatarOptions(){
        options = new DisplayImageOptions.Builder()
                .showStubImage(R.mipmap.personal_default_user_icon)// 设置图片下载期间显示的图片
                .showImageForEmptyUri(R.mipmap.personal_default_user_icon)// 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.mipmap.personal_default_user_icon)// 设置图片加载或解码过程中发生错误显示的图片
                .cacheInMemory(true)//设置下载的图片是否缓存在SD卡中
                .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中
                .bitmapConfig(Bitmap.Config.RGB_565)     //设置图片的解码类型
                .build();// 创建配置过得DisplayImageOption对象
        return options;
    }

    //相片配置
    public static DisplayImageOptions getPhotorOptions(){
        options = new DisplayImageOptions.Builder()
                .showStubImage(0)// 设置图片下载期间显示的图片
                .showImageForEmptyUri(0)// 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(0)// 设置图片加载或解码过程中发生错误显示的图片
                .cacheInMemory(true)//设置下载的图片是否缓存在SD卡中
                .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中
                .bitmapConfig(Bitmap.Config.RGB_565)     //设置图片的解码类型
                .build();// 创建配置过得DisplayImageOption对象
        return options;
    }


    public static AnimateFirstDisplayListener animateFirstDisplayListener;
    public static AnimateFirstDisplayListener getAnimateFirstDisplayListener(){
        if(animateFirstDisplayListener==null){
            animateFirstDisplayListener=new AnimateFirstDisplayListener();
        }
        return animateFirstDisplayListener;
    }

    /**
     * 图片加载第一次显示监听器
     * @author Administrator
     *
     */
    public static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {

        static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            if (loadedImage != null) {
                ImageView imageView = (ImageView) view;
                // 是否第一次显示
                boolean firstDisplay = !displayedImages.contains(imageUri);
                if (firstDisplay) {
                    // 图片淡入效果
                    FadeInBitmapDisplayer.animate(imageView, 500);
                    displayedImages.add(imageUri);
                }
            }
        }
    }
}
